#include <mutex>
#include <iostream>

std::mutex mtx;  // 全局互斥锁
int shared_data = 0;  // 共享数据

void update_data() {
    // 执行一些不需要同步的预处理
    std::cout << "Performing some preparatory work..." << std::endl;
    
    {
        // 限定锁的作用域到实际需要同步的代码区块
        std::lock_guard<std::mutex> lock(mtx);
        shared_data++;  // 只有这部分需要被锁保护
        std::cout << "Shared data updated to " << shared_data << std::endl;
    }  // 锁在这里自动释放

    // 继续执行不需要同步的后处理
    std::cout << "Performing some follow-up work..." << std::endl;
}

int main() {
    update_data();
    return 0;
}